trade_refund (申请退款)

该接口提供全额退款部分退款功能。 部分退款时退款单号(退款标识)生成方法是自增模式,前缀可以在Pament.php文件里设置REFUND_PREFIX

//加载相应的Library
$type = 'weixin';
if($type == 'weixin'){
    $this->load->library('WxPay'); 
    $payment = $this->wxpay;
}else if($type == 'alipay'){
    $this->load->library('AliPay'); 
    $payment = $this->alipay;
}

// 设置订单号
$trade_no = '2017101621001004340289220052';  
$payment->set_trade_no($trade_no);

// $order_no = 'jtorder001';    //使用商家订单号查询
// $payment->set_trade_no(null,$order_no);

$total_amount = '1.00';
$reason = '拼团失败退款';

//全额退款
$result = $payment->trade_refund($total_amount, $reason);


//部分退款
$amount = '0.02';
$result2 = $payment->trade_refund($total_amount, $reason, $amount);

//指定退款标识、部分退款(不是特殊情况不建议这么使用)
$amount = '0.03';
$result2 = $payment->trade_refund($total_amount, $reason, $amount, 'TK005');


// *****************************************************
// *** 当前项目当中以上代码简化成这样使用,根据订单号自动加载 ***
// *****************************************************
$this->load->helper('payment');
$payment = load_payment_by_order_no($order_id);
//全额退款
$result = $payment->trade_refund($total_amount, $reason);

请求参数

字段名 参数 类型 是否必填 描述 示例值
总金额 $total_amount DECIMAL(10,2) 必填 该订单的总金额 (单位:元) 10.50
退款原因 $reason String(255) - -
退款金额 $refund_amount DECIMAL(10,2) 默认为0可以省略,0的时候是全额退款 10.50
退款标识 $out_refund_no String(32) 默认为null, 建议省略退款标识。使用场景是之前有申请退款的没有成功,一定要用同样退款标识退款的情况下使用这个参数 TK003
其他可选参数 $param Array 其他可选参数 jtorder910

响应参数

字段名 参数 类型 是否必填 描述
执行结果状态 result_status Bool 必填 真(REFUND_SUCCESS退款申请接收成功,结果通过退款查询接口查询),否则为假
状态码 result_code String(32) 必填 执行结果状态码(详见底部状态码)
状态描述 status_msg String(255) 必填 执行结果状态描述
交易ID trade_no String(64) 必填(成功时) 支付平台的交易号
详细描述 status_sub_msg String(255) 执行状态详细描述
订单总金额 total_amount DECIMAL(10,2) 必填(成功时) 订单总金额
已退款总金额 refund_amount String(128) 必填(成功时) 订单已退款的总金额
退款金额 refund_fee String(128) 必填(成功时) 本次交易退款金额
已退款单数 refund_count String(128) -
原数据 request_data Array 支付平台回调的信息

执行结果状态码

状态码 描述
REFUND_SUCCESS 退款成功
REFUND_FAIL 退款失败
NOTENOUGH 余额不足
NOTFOUND 交易不存在
ERROR 发生错误